#include <stdio.h>

float FastInverseSqrt(float x) {
    long i = *(long*)&x;                  // 将浮点数转换为整数
    i = 0x5f3759df - (i >> 1);            // 魔法常数与位操作
    float y = *(float*)&i;                // 转换回浮点数
    y = y * (1.5f - (x * 0.5f * y * y));  // 迭代
    return y;
}

int main() {
    float x = 4.0f;
    float result = FastInverseSqrt(x);
    printf("1 / sqrt(%.2f) = %.6f\n", x, result);
    return 0;
}